package com.urbane.auth.vo;

import lombok.Data;

/**
 * 登录成功响应对象
 * 功能：
 *   - 包含 JWT Token 和用户基础信息
 *   - 供前端用于存储 Token、显示用户名头像、设置权限
 * <p>
 * 注意：
 *   - 所有字段均为只读，不可被前端修改
 *   - 使用 Lombok @Data 自动生成 getter/setter/toString
 */
@Data
public class LoginResponse {

    private String token;                      // ✅ JWT 认证令牌
    private UserBaseInfo user;                 // ✅ 用户基本信息（脱敏）
    private Integer expiresIn;                 // ✅ Token 有效时间（秒）
    private String refreshToken;               // ⚠️ 可选：刷新令牌（仅当启用刷新机制时返回）

    // ===== 构造函数 =====

    public LoginResponse(String token, UserBaseInfo user) {
        this(token, user, 7200); // 默认 2 小时
    }

    public LoginResponse(String token, UserBaseInfo user, Integer expiresIn) {
        this(token, user, expiresIn, null);
    }

    public LoginResponse(String token, UserBaseInfo user, Integer expiresIn, String refreshToken) {
        this.token = token;
        this.user = user;
        this.expiresIn = expiresIn;
        this.refreshToken = refreshToken;
    }
}